A user of an application program running on a computing device (e.g., a word processing program) may interact with the application program through one or more input devices, such as a keyboard or a pointing device. By entering specific input, the user may cause the application program (“application”) to perform specific functions, such as opening a document, receiving text input in the document, formatting the entered text, saving the document and exiting the application. For example, to save a document that is currently open, a user may employ a pointing device to open a drop-down menu in a user interface window associated with the application, then select a “save” function from the drop-down menu.
Some applications may provide several methods of performing a given function. Some of the methods may be keyboard “shortcuts” that allow the user to perform the function by, for example, concurrently selecting two or more keys. For example, the user may be able to invoke the “save” function of an application by entering a combination of keys, such as “Command” and ‘S,’ or “CTRL” and ‘S.’ In addition to shortcuts within a specific application, a computing system may receive concurrent input from one or more input devices that correspond to “hotkeys” defined in the computing system. The hotkeys may cause the computing system to perform actions either inside or outside of the currently active application.
Hotkeys may be used to control various physical aspects of a computing device or various aspects related to an operating system running on the computing device. For example, an input device, such as a keyboard, may include specialized keys or buttons that, for example, mute or adjust volume associated with an audio output device. As another example, a slider control on an expanded keyboard may allow a user to control magnification of a view of a window associated with an application. As another example, an expanded keyboard may provide a number of user-configurable buttons that may be associated with various system or application program operations (e.g., buttons that control display brightness; open or close a CD/DVD tray; or launch a particular program, such as an email client, etc.). As another example, a hotkey may be used to invoke or control an operating system function, such as, for example, to open a task management interface, to open or control a memory manager or monitor, to open or control a CPU performance monitor, to open a registry interface, etc.
Application developers may enable or disable certain hotkeys during operation of an application (e.g., to improve an overall user experience of the application or to improve system stability). For example, a presentation application that uses a full display screen may be programmed to disable system hotkeys associated with, for example, closing the application. If an application that disables hotkeys crashes without properly restoring the hotkeys' previous state, a substantial loss of functionality may result. Similarly, if an application that enables specialized hotkeys, particularly hotkeys that may not be properly coded or configured, and the application crashes before properly disabling the specialized hotkeys, the computing system may be less stable or predictable.